package de.herzog.bbp.view.column;

import java.util.List;

import de.herzog.bbp.model.Klasse;
import de.herzog.bbp.model.dao.KlasseDAO;
import de.herzog.bbp.view.bean.SpielBean;
import de.herzog.bbp.view.javafx.AbstractStringConverter;
import de.herzog.bbp.view.javafx.AutoCompleteListFactory;
import de.herzog.bbp.view.javafx.Validator;

public class KlasseColumn extends AbstractColumn<Klasse> {

	public KlasseColumn() {
		super();
	}

	public KlasseColumn(String text) {
		super(text);
	}

	@Override
	protected AutoCompleteListFactory<SpielBean, Klasse> getAutoCompleteListFactory() {
		return new AutoCompleteListFactory<SpielBean, Klasse>(getStringConverter()::toString) {
			@Override
			protected List<Klasse> getObjectList() {
				return sort(KlasseDAO.loadAll());
			}
		};
	}

	@Override
	protected AbstractStringConverter<SpielBean, Klasse> getStringConverter() {
		return new AbstractStringConverter<SpielBean, Klasse>() {
			public String toString(Klasse klasse) {
				return klasse == null ? "" : klasse.getName();
			}

			public Klasse fromString(String string) {
				return KlasseDAO.getByName(string);
			}
		};
	}

	@Override
	protected Validator getValidator() {
		return new Validator(Validator.CONVERT_UPPER, 6, //
				"[A-Z]?[A-Z0-9]{0,5}", //
				"[A-Z][A-Z0-9]{2,5}");
	}

}
